package cn.flyingocean.spider;

import cn.flyingocean.exception.SpiderException;
import org.jsoup.nodes.Document;

public interface Spider {
    /**
     * 解析过程，由使用者来具体实现
     */
    Object doWork(Document document);

    /**
     * 解析过程，由使用者来具体实现
     */
    Object doWork(String url);


    /**
     * cn.flyingocean.SpiderManager 将会调用爬虫队列中的第一个爬虫的该方法，使用第一个爬虫的成员变量url作为爬取目标
     * @return
     */
    Object doWork();

    Object doWork(Object mid) throws SpiderException;

    /**
     * doWork() 完成后回调该函数
     * @param r
     */
    void onCompleted(Object r);


    /**
     * 要给出可能将被使用的url
     * 如果这个爬虫是爬虫队列中的第一个，该值必须设置
     * @return
     */
    String getUrl();

    /**
     * spider使用完成前要进行的工作
     */
    void beforeDead();
}
